//+------------------------------------------------------------------+
//|                                                 TerminalInfo.mqh |
//|                             Copyright 2000-2025, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#include <Object.h>

//+------------------------------------------------------------------+
//| 终端信息类                                                       |
//| 用途：访问终端信息的类                                           |
//|         继承自 CObject 类                                        |
//+------------------------------------------------------------------+
class CTerminalInfo : public CObject
{
public:
   /** 构造函数 */
   CTerminalInfo(void);
   
   /** 析构函数 */
   ~CTerminalInfo(void);
   
   /**
    * 获取终端构建版本号
    * @return 构建版本号
    */
   int               Build(void) const;
   
   /**
    * 检查是否连接到服务器
    * @return 已连接返回 true，未连接返回 false
    */
   bool              IsConnected(void) const;
   
   /**
    * 检查是否允许使用DLL
    * @return 允许返回 true，禁止返回 false
    */
   bool              IsDLLsAllowed(void) const;
   
   /**
    * 检查是否允许交易
    * @return 允许返回 true，禁止返回 false
    */
   bool              IsTradeAllowed(void) const;
   
   /**
    * 检查是否启用电子邮件通知
    * @return 启用返回 true，禁用返回 false
    */
   bool              IsEmailEnabled(void) const;
   
   /**
    * 检查是否启用FTP功能
    * @return 启用返回 true，禁用返回 false
    */
   bool              IsFtpEnabled(void) const;
   
   /**
    * 获取图表最大柱数
    * @return 最大柱数
    */
   int               MaxBars(void) const;
   
   /**
    * 获取终端代码页
    * @return 代码页标识符
    */
   int               CodePage(void) const;
   
   /**
    * 获取CPU核心数
    * @return CPU核心数
    */
   int               CPUCores(void) const;
   
   /**
    * 获取物理内存总量
    * @return 物理内存总量（MB）
    */
   int               MemoryPhysical(void) const;
   
   /**
    * 获取总内存量
    * @return 总内存量（MB）
    */
   int               MemoryTotal(void) const;
   
   /**
    * 获取可用内存量
    * @return 可用内存量（MB）
    */
   int               MemoryAvailable(void) const;
   
   /**
    * 获取已使用内存量
    * @return 已使用内存量（MB）
    */
   int               MemoryUsed(void) const;
   
   /**
    * 检查是否为64位操作系统
    * @return 64位返回 true，32位返回 false
    */
   bool              IsX64(void) const;
   
   /**
    * 获取OpenCL支持级别
    * @return OpenCL支持级别
    */
   int               OpenCLSupport(void) const;
   
   /**
    * 获取磁盘空间
    * @return 磁盘空间（MB）
    */
   int               DiskSpace(void) const;
   
   /**
    * 获取终端语言
    * @return 语言代码
    */
   string            Language(void) const;
   
   /**
    * 获取终端名称
    * @return 终端名称
    */
   string            Name(void) const;
   
   /**
    * 获取公司名称
    * @return 公司名称
    */
   string            Company(void) const;
   
   /**
    * 获取终端安装路径
    * @return 安装路径
    */
   string            Path(void) const;
   
   /**
    * 获取数据存储路径
    * @return 数据存储路径
    */
   string            DataPath(void) const;
   
   /**
    * 获取公共数据存储路径
    * @return 公共数据存储路径
    */
   string            CommonDataPath(void) const;
   
   /**
    * 获取整数型终端信息
    * @param prop_id 属性ID
    * @return 属性值
    */
   long              InfoInteger(const ENUM_TERMINAL_INFO_INTEGER prop_id) const;
   
   /**
    * 获取字符串型终端信息
    * @param prop_id 属性ID
    * @return 属性值
    */
   string            InfoString(const ENUM_TERMINAL_INFO_STRING prop_id) const;
};
//+------------------------------------------------------------------+